unit ucontrolefornecedor;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls, DBCtrls, ExtCtrls, Grids, DBGrids,
  Buttons, ActnList, ComCtrls;

type


  Tfcontrolefornecedor = class(TForm)
    StatusBar1: TStatusBar;
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    DBText1: TDBText;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    Label2: TLabel;
    DBText2: TDBText;
    SpeedButton3: TSpeedButton;
    Table1: TTable;
    DataSource1: TDataSource;
    ActionList1: TActionList;
    foco: TAction;
    imprimirA: TAction;
    imprimirT: TAction;
    Panel3: TPanel;
    Panel4: TPanel;
    DBGrid2: TDBGrid;
    Panel2: TPanel;
    Label1: TLabel;
    Panel5: TPanel;
    DBText3: TDBText;
    DBText4: TDBText;
    ajuda: TAction;
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBGrid2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBGrid2ColExit(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure focoExecute(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure imprimirAExecute(Sender: TObject);
    procedure imprimirTExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DBText4Click(Sender: TObject);
    procedure DBText3Click(Sender: TObject);
    procedure ajudaExecute(Sender: TObject);
  private

        procedure AppHint(Sender : TObject);

    { Private declarations }
  public
    { Public declarations }
  end;

var
  fcontrolefornecedor: Tfcontrolefornecedor;

implementation

uses upedidofornecedor, urpedidofornecedor, UnitMenu, clipbrd, udm;

{$R *.dfm}

procedure Tfcontrolefornecedor.AppHint(Sender: TObject);
begin
  StatusBar1.Panels[0].Text := Application.Hint;
end;

procedure Tfcontrolefornecedor.FormActivate(Sender: TObject);
begin
  table1.Open;
 (table1.fieldbyname ('dataentrada') as tdatetimefield).editmask:= '99/99/9999';
 (table1.fieldbyname ('qtd') as tfloatfield).displayformat := '00';
 dbgrid2.SetFocus;
 dbgrid2.SelectedIndex := 0;
end;

procedure Tfcontrolefornecedor.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
        Application.OnHint := nil;  
        table1.Close;
end;

procedure Tfcontrolefornecedor.DBGrid2KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
        if key = 13 then
         if dbgrid2.SelectedIndex = 0 then
           dbgrid2.SelectedIndex := 1
         else
           dbgrid2.SelectedIndex := 0;


        if key = 27 then
         if dbgrid2.SelectedIndex = 0 then
           dbgrid2.SelectedIndex := 1
         else
           dbgrid2.SelectedIndex := 0;

end;

procedure Tfcontrolefornecedor.DBGrid2ColExit(Sender: TObject);
var
tot: real;
bookmark : tbookmarkstr;
begin

     bookmark := table1.Bookmark;

     try
      table1.DisableControls;
      tot := 0;

    try
    table1.First;

    while not table1.Eof do begin

    tot := tot + (table1.fieldbyname ('qtd') as tfloatfield).Value;
    table1.next;
    end;
    finally

    table1.EnableControls;
    end;
    finally
    table1.Bookmark := bookmark;
    end;


    if tot <= fpedidofornecedor.tbitem['qtd'] then begin
     fpedidofornecedor.tbitem.Edit;
      fpedidofornecedor.tbitem['qtdentrada'] := tot;
       fpedidofornecedor.tbitem['saldo'] := (fpedidofornecedor.tbitem.fieldbyname ('qtd') as tfloatfield).Value -
        (fpedidofornecedor.tbitem.fieldbyname ('qtdentrada') as tfloatfield).Value;
         fpedidofornecedor.tbitem.post;

    end else begin

     Showmessage ('A entrada é maoir que o pedido!!!    Verificar!!!');
      table1.Edit;
       table1['qtd'] := null;
        abort;
         end;


end;

procedure Tfcontrolefornecedor.SpeedButton1Click(Sender: TObject);
begin
        fpedidofornecedor.tbpedido.Next;

end;

procedure Tfcontrolefornecedor.SpeedButton2Click(Sender: TObject);
begin
        fpedidofornecedor.tbpedido.Prior;
end;

procedure Tfcontrolefornecedor.focoExecute(Sender: TObject);
begin
        if dbgrid1.Focused = true then
         dbgrid2.SetFocus
        else
         dbgrid1.SetFocus; 
end;

procedure Tfcontrolefornecedor.SpeedButton3Click(Sender: TObject);

var
st:string;
begin
          st:='A';

        if inputquery ('Opções de impressão','Digite "A" para imprimir todos os ítens' + #13 + 'Digite "T" para imprimir somente saldo:', st) then

          if uppercase(st) ='A' then
           imprimirAexecute(self)
          else  if uppercase(st) ='T' then
           imprimirTexecute(self)
          else
           ShowMessage('Esta opção não é válida');

end;

procedure Tfcontrolefornecedor.imprimirAExecute(Sender: TObject);
var
pd:string;
bookmark : tbookmarkstr;
begin


       bookmark := fpedidofornecedor.tbpedido.bookmark;

       if  application.MessageBox('Imprimir somente este pedido?','Imprimir pedido (s)',4 + MB_ICONWARNING ) = mryes then begin

         pd := (fpedidofornecedor.tbpedido['pedido']);

        fpedidofornecedor.tbpedido.Filter := 'pedido='''+ pd +'''';
         fpedidofornecedor.tbpedido.filtered := true;
          end;


        Application.CreateForm(tFrPedidoFornecedor, FrPedidoFornecedor);

       fmenu.logotipoExecute(self);
        if fileexists (extractfilepath(paramstr(0)) + '\imagem\logo.bmp') then begin
         FrPedidoFornecedor.image3.Picture.assign(clipboard);
          clipboard.clear;
  end;

    if fileexists (extractfilepath(paramstr(0)) + '\imagem\dado.txt') then
     FrPedidoFornecedor.memo3.lines.loadfromfile(extractfilepath(paramstr(0)) + '\imagem\dado.txt');

      FrPedidoFornecedor.quickpedidosaldo.previewmodal;
       FrPedidoFornecedor.Release;
        fpedidofornecedor.tbpedido.Filtered := false;

          fpedidofornecedor.tbpedido.Bookmark := bookmark;
end;

procedure Tfcontrolefornecedor.imprimirTExecute(Sender: TObject);
begin

       with fdm.query1 do begin
        close;
         sql.clear;
          sql.add('select * from tbpedidofornecedoritem where saldo > "0" order by pedido');
           open;
            end;

            if fdm.query1['codigo']<> null then begin

        Application.CreateForm(tFrPedidoFornecedor, FrPedidoFornecedor);

       fmenu.logotipoExecute(self);
        if fileexists (extractfilepath(paramstr(0)) + '\imagem\logo.bmp') then begin
         FrPedidoFornecedor.image4.Picture.assign(clipboard);
          clipboard.clear;
  end;

    if fileexists (extractfilepath(paramstr(0)) + '\imagem\dado.txt') then
     FrPedidoFornecedor.memo4.lines.loadfromfile(extractfilepath(paramstr(0)) + '\imagem\dado.txt');

      FrPedidoFornecedor.quickpedidosaldotudo.previewmodal;
       FrPedidoFornecedor.Release;


    end else showmessage('Não há saldo em nenhum pedido');

        fdm.query1.close;



end;

procedure Tfcontrolefornecedor.FormCreate(Sender: TObject);
begin
  Application.OnHint := AppHint;
end;

procedure Tfcontrolefornecedor.DBText4Click(Sender: TObject);
var
st:string;
bok:boolean;
begin
        BOK := inputquery('Localizar Pedido','Entre com o número:',ST);
         if BOK then
          if not fpedidofornecedor.tbpedido.Locate ('pedido',ST,[]) then
           ShowMessage ('Pedido não encontrado!!!');
            ST := '';

end;

procedure Tfcontrolefornecedor.DBText3Click(Sender: TObject);
var
st:string;
bok:boolean;
begin
        BOK := inputquery('Localizar Pedido','Entre com nome do fornecedor:',ST);
         if BOK then
          if not fpedidofornecedor.tbpedido.Locate ('fantasia',uppercase(ST),[]) then
           ShowMessage ('Fornecedor não encontrado!!!');
            ST := '';

end;

procedure Tfcontrolefornecedor.ajudaExecute(Sender: TObject);
var
  Comp: Trichedit; // * variável Comp da classe TMemo
  texto : string;
begin
  Comp := Trichedit.Create (Self);  // * cria o componente Memo
  Comp.Parent := Self;    // * exibe o componente criado

  if fileexists (extractfilepath(paramstr(0)) + '\ajuda\ajudapedidobaixa.txt') then
   comp.lines.loadfromfile (extractfilepath(paramstr(0)) + '\ajuda\ajudapedidobaixa.txt');

  texto := comp.Text;
  comp.Destroy;

  Showmessage (texto);


end;

end.
